package com.cool.cloud.mapper;

import com.cool.cloud.entity.FileStoreStatistics;
import com.cool.cloud.entity.MyFile;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @InterfaceName: MyFileMapper
 * @Description: 与文件相关的数据库操作
 * @author: laijunji
 * @date 2020/1/26 21:55
 * @Version: 1.0
 **/
@Mapper
public interface MyFileMapper {

    /**
     * @return java.lang.Integer
     * @Description 添加文件
     * @Author laijunji
     * @Date 15:20 2020/2/26
     * @Param [myFile]
     **/
    Integer addFileByFileStoreId(MyFile myFile);

    /**
     * @return java.lang.Integer
     * @Description 根据文件id修改文件
     * @Author laijunji
     * @Date 15:20 2020/2/26
     * @Param [myFile]
     **/
    Integer updateFileByFileId(MyFile myFile);

    /**
     * @return java.lang.Integer
     * @Description 移动文件至新文件夹
     * @Author laijunji
     * @Date 15:20 2021/5/19
     * @Param [myFile]
     **/
    Integer moveFile(@Param("fileId") Integer fileId, @Param("floderId") Integer floderId);

    /**
     * @return java.lang.Integer
     * @Description 根据文件的id删除文件
     * @Author laijunji
     * @Date 15:20 2020/2/26
     * @Param [myFileId]
     **/
    Integer deleteByFileId(Integer myFileId);

    /**
     * @return java.lang.Integer
     * @Description 根据父文件夹的id删除文件
     * @Author laijunji
     * @Date 15:20 2020/2/26
     * @Param [id]
     **/
    Integer deleteByParentFolderId(Integer id);

    /**
     * @return com.cool.cloud.entity.MyFile
     * @Description 根据文件的id获取文件
     * @Author laijunji
     * @Date 15:20 2020/2/26
     * @Param [myFileId]
     **/
    MyFile getFileByFileId(Integer myFileId);

    /**
     * @return java.util.List<com.cool.cloud.entity.MyFile>
     * @Description 获得仓库根目录下的所有文件
     * @Author laijunji
     * @Date 23:53 2020/2/9
     * @Param [fileStoreId]
     **/
    List<MyFile> getRootFilesByFileStoreId(Integer fileStoreId);

    /**
     * @return java.util.List<com.cool.cloud.entity.MyFile>
     * @Description 根据父文件夹id获得文件
     * @Author laijunji
     * @Date 0:07 2020/2/10
     * @Param [parentFolderId]
     **/
    List<MyFile> getFilesByParentFolderId(Integer parentFolderId);

    /**
     * @return java.util.List<com.cool.cloud.entity.MyFile>
     * @Description 根据类别获取文件
     * @Author laijunji
     * @Date 10:13 2020/2/26
     * @Param [storeId, type]
     **/
    List<MyFile> getFilesByType(@Param("storeId") Integer storeId, @Param("type") Integer type);

    /**
     * @return com.cool.cloud.entity.FileStoreStatistics
     * @Description 获取仓库的统计信息
     * @Author laijunji
     * @Date 21:47 2020/2/10
     * @Param [id]
     **/
    FileStoreStatistics getCountStatistics(Integer id);

    /**
     * @return java.util.List<com.cool.cloud.entity.MyFile>
     * @Description 根据storeId获取所有文件
     * @Author laijunji
     * @Date 10:13 2020/2/26
     * @Param storeId、fileName
     **/
    List<MyFile> getFilesBySearch(@Param("storeId") Integer storeId, @Param("fileName") String fileName);
}